1 Field of the Invention
The present invention relates to a computer system having an on-board controller(s) and an expansion slot(s) for an upgrade controller(s), and more particularly, to automatically detecting and configuring the upgrade controller(s) when present in the expansion slot(s) during computer system startup, or otherwise, enabling and configuring the on-board controller(s).
2 Description of the Related Technolgy
Use of computers, especially personal computers, in business and at home is becoming more and more pervasive because the computer has become an integral tool of most information workers who work in the fields of accounting, law, engineering, insurance, services, sales and the like. Rapid technological improvements in the field of computers have opened up many new applications heretofore unavailable or too expensive for the use of older technology mainframe computers. These personal computers may be used as stand-alone workstations (high end individual personal computers) or linked together in a network by a "network server" which is also a personal computer which may have a few additional features specific to its purpose in the network. The network server may be used to store massive amounts of data, and may facilitate interaction of the individual workstations connected to the network for electronic mail ("e-mail"), document databases, video teleconferencing, whiteboarding, integrated enterprise calendar, virtual engineering design and the like. Multiple network servers may also be interconnected by local area networks "LAN") and wide area networks ("WAN").
A computer system has a plurality of information (data and address) buses such as a host bus, a memory bus, high speed expansion buses such as the Accelerated Graphics Port (AGP) bus, the Peripheral Component Interconnect (PCI) bus, and other peripheral buses such as the Small Computer System Interface (SCSI), Extension to Industry Standard Architecture (EISA), Universal Serial Bus (USB) and Industry Standard Architecture (ISA). The microprocessor(s) (CPU) of the computer system communicates with main memory and with the peripherals that make up the computer system over these various buses. The microprocessor(s) communicates to the main memory over a host bus to memory bus bridge. The main memory generally communicates over a memory bus through a cache memory bridge to the CPU host bus. The peripherals, depending on their data transfer speed requirements, are connected to the various buses which are connected to the microprocessor host bus through bus bridges that detect required actions, arbitrate, and translate both data and addresses between the various buses.
The choices available for the various computer system bus structures and devices residing on these buses are relatively flexible and may be organized in a number of different ways. One of the more desirable features of present day personal computer systems is their flexibility and ease in implementing custom solutions for users having widely different requirements. Slower peripheral devices may be connected to the ISA or EISA bus(es), other peripheral devices, such as disk and tape drives may be connected to a SCSI bus, and the fastest peripheral devices such as network interface cards (NICs) and video graphics controllers may require connection to the PCI and AGP buses, respectively.
A more complete definition of the PCI bus may be found in the PCI Local Bus Specification, revision 2.1; PCI/PCI Bridge Specification, revision 1.0; PCI System Design Guide, revision 1.0; PCI BIOS Specification, revision 2.1, and Engineering Change Notice ("ECN") entitled "Addition of `New Capabilities` Structure, " dated May 20, 1996, the disclosures of which are hereby incorporated by reference. These PCI specifications and ECN are available from the PCI Special Interest Group, P.O. Box 14070, Portland, Oreg. 97214.
The AGP bus has sufficient bandwidth for a graphics controller to retrieve textures from system memory without materially affecting computer system performance for other non-graphics operations. The Intel 3-D graphics standard is a specification, which provides signal, protocol, electrical, and mechanical specifications for the AGP bus and devices attached thereto. This specification is entitled "Accelerated Graphics Port Interface Specification version 2.0," dated May 4, 1998; and also "Accelerated Graphics Port Interface Specification version 1.0," dated Jul. 31, 1996 are hereby incorporated by reference. The AGP specification, both versions 2.0 and 1.0, are available from Intel Corporation, Santa Clara, Calif. The AGP specification creates an independent and additional high speed local bus for use by 3-D graphics devices such as a graphics controller, wherein the other input-output "I/O") devices of the computer system may remain on any combination of the PCI, SCSI, EISA and ISA buses.
Another advance in the flexibility and ease in the implementation of personal computers is the emerging "plug and play" standard in which each vendor's hardware has unique coding embedded within the peripheral device. Plug and play software in the computer operating system software auto configures the peripheral devices found connected to the various computer buses such as the various PCI buses, EISA and ISA buses. In addition, the plug and play operating system software configures registers within the peripheral devices found in the computer system as to memory space allocation, interrupt priorities and the like.
Plug and play initialization generally is performed with a system configuration program that is run whenever a new device is incorporated into the computer system. Once the configuration program has determined the parameters for each of the devices in the computer system, these parameters may be stored in non-volatile random access memory (NVRAM). An industry standard for storage of both plug and play and non-plug and play device configuration information is the Extended System Configuration Data (ESCD) fornat. The ESCD format is used to store detailed configuration information in the NVRAM for each device. This ESCD information allows the computer system read only memory (ROM) basic input/output system (BIOS) configuration software to work together with the configuration utilities to provide robust support for all peripheral devices, both plug and play, and non- plug and play.
During the first initialization of a computer, the system configuration utility determines the hardware configuration of the computer system including all peripheral devices connected to the various buses of the computer system. Some user involvement may be required for device interrupt priority and the like. Once the configuration of the computer system is determined, either automatically and/or by user selection of settings, the computer system configuration information is stored in ESCD format in the NVRAM. Thereafter, the system configuration utility need not be run again. This greatly shortens the startup time required for the computer system and does not require the computer system user to have to make any selections for hardware interrupts and the like, as may be required in the system configuration utility.
A significant part of the ever increasing popularity of the personal computer, besides its low cost relative to just a few years ago, is its ability to run sophisticated programs and perform many useful and new tasks. A major advance in the performance of personal computers (both workstation and network servers) has been the implementation of sophisticated peripheral devices having controllers connected to the various aforementioned computer system buses such as, for example but not limitation: video graphics adapters, local area network interfaces, SCSI bus adapters, redundant error checking and correcting disk array controller, and the like. The controllers for the various computer system peripherals may reside on the computer system motherboard for initial low cost implementation. However, it may be desirable to upgraded the computer system with newer or more sophisticated plug-in controllers for desired peripherals having added flexibility and/or enhanced performance.
Peripheral buses like AGP, ISA and the like, cannot address two devices having the same physical address. There will be data contention. The PCI bus has an IDSEL signal to configure a device during POST. Therefore, for example, when selecting either an AGP controller on the computer system motherboard or a upgrade AGP controller plugged into an AGP expansion slot, generally, a physical jumper must be changed. This may create additional expense, increased setup time (if external logic is used in a signal line such as the AGP FRAME), and potential hardware problems since the computer system must be opened and preferably serviced by an experienced technician. What is needed is an apparatus and method for selection of either a peripheral controller on the computer system motherboard or a upgrade peripheral controller plugged into an expansion slot in a computer system that is transparent to the computer user, automatically operable during POST and which does not degrade normal operation of the selected peripheral controller.